package genetica.cromosomas.evaluadores;

import genetica.cromosomas.fenotipos.Fenotipo;
import genetica.cromosomas.fenotipos.FenotipoFunciones;

import java.util.ArrayList;

public class evaluadorFuncionD extends EvaluadorFuncion {

	protected int n;
	
	public evaluadorFuncionD(int n) {
		this.n = n;
	}
	
	@Override
	public Double getFunctionValue(ArrayList<Fenotipo> fenotipo) {
		if ((fenotipo.size() < 0) || !(fenotipo.get(0) instanceof FenotipoFunciones)){
			return null;
		}
		
		Double result = 0.0;
		for (int i = 0; i < this.n ; i++){
			Double xi = ((FenotipoFunciones) fenotipo.get(i)).getFenotipo();
			result += -(xi*Math.sin(Math.sqrt(Math.abs(xi))));
		}
		return result;
	}

}
